﻿Imports OpenSSL.Crypto
Imports OpenSSL.Crypto.RSA
Module mailer
    Private comm As ClsCommunicate
    Private strEventLog As String
    Private cnt As Long = 0

    ''' <summary>
    ''' システムの入り口
    ''' </summary>
    Sub Main()
        comm = New ClsCommunicate
        
        '■イベントログ出力（出力メッセージ内容【メーラーサービス開始】）
        comm.WriteToEventLog(ClsStatic.MSG_EVENTLOG.SERVICES_START, ClsStatic.EventID.SuccessAudit)
        If comm.init() = False Then
            'メーラーサービス停止
            Console.ReadKey()
            Return
        End If

        Console.WriteLine("---------------[" & "feed.config" & "]情報---------------")

        Console.WriteLine("POPサーバー          " & InitSettings.Instance.PopServer)
        Console.WriteLine("SMTPサーバー         " & InitSettings.Instance.SmtpServer)
        ' Console.WriteLine("SSLの利用可否        " & InitSettings.Instance.UseSsl)
        Console.WriteLine("ユーザーID           " & InitSettings.Instance.UserId)
        Console.WriteLine("パスワード           " & InitSettings.Instance.Password)
        Console.WriteLine("メール受信間隔(ミリ秒)  " & InitSettings.Instance.Interval)
        Console.WriteLine("POPポート            " & InitSettings.Instance.PopPort)
        Console.WriteLine("SMTPポート           " & InitSettings.Instance.SmtpPort)
        'Console.WriteLine("メールUID            " & InitSettings.Instance.UID)
        Console.WriteLine("ドメイン             " & InitSettings.Instance.Domain)

        Console.WriteLine("")
        'メーリングリスト
        For i = 0 To InitSettings.Instance.MailingList.Count - 1
            Console.WriteLine("'メーリングリスト    Group" & i + 1)
            Console.WriteLine("ユーザ種類           " & InitSettings.Instance.MailingList(i).SystemName)
            'Console.WriteLine("検索用キー           " & InitSettings.Instance.MailingList(i).SearchKey)
            Console.WriteLine("宛先メール           " & InitSettings.Instance.MailingList(i).AcceptMail)
            Console.WriteLine("宛先の名前           " & InitSettings.Instance.MailingList(i).AcceptName)
            Console.WriteLine("件名                 " & InitSettings.Instance.MailingList(i).TitleName)
            Console.WriteLine("差出人名             " & InitSettings.Instance.MailingList(i).SendName)
            'OpenSSLキー
            For j = 0 To InitSettings.Instance.MailingList(i).OpenSslKeyList.Count - 1
                Console.WriteLine("'OpenSSLキー         Group" & j + 1)
                Console.WriteLine("公開鍵               " & InitSettings.Instance.MailingList(i).OpenSslKeyList(j).PublicKey)
                Console.WriteLine("秘密鍵               " & InitSettings.Instance.MailingList(i).OpenSslKeyList(j).PrivateKey)
            Next
        Next

        Console.WriteLine("---------------設定ファイル正常に読込完了---------------")

        Console.WriteLine("---------------メールの読み込み開始---------------")
        loopSleepEvent()

        Console.WriteLine("---------------メールの読み込み終了---------------")
    End Sub

    ''' <summary>
    ''' スリープイベント処理
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub loopSleepEvent()
        Do
            'メールのチェック回数
            cnt += 1
            'メール件数初期化
            comm.cntMail = 0
            If comm.getMailAccount() = False Then Return
            Console.WriteLine(System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss    ") & cnt & "回目：　" & comm.cntMail & "通メールを検出")

            System.Threading.Thread.Sleep(InitSettings.Instance.Interval)
            'loopSleepEvent()
        Loop Until 1 = 2
    End Sub

    ''' <summary>
    ''' 通信終了処理
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub exitServices()
        If comm.pop3Client.Connected Then
            'comm.pop3Client.Disconnect()
            comm.pop3Client.Dispose()
        End If

    End Sub
End Module
